package com.hundunjiang.LinkList;

import java.util.List;

public class LinkListBase {


    /**
     * 头插法
     */
    public LinkList insertHead(LinkList linkList, String value) {
        // 创建新的节点
        LinkList newLinkList=new LinkList();
        // 给新节点的data赋值 value
        newLinkList.setData(value);
        // 如果链表为空
        if (linkList == null) {
            // 让链表的next指向新的节点
            linkList.setNext(newLinkList);
            return linkList;
        }
        // 让新创建节点的next指向头节点的下一个节点
        newLinkList.setNext(linkList.getNext());
        // 让头节点的next指向新的节点
        linkList.setNext(newLinkList);
        // 返回链表的头节点
        return linkList;
    }


    /**
     * 尾插法
     */
    public LinkList insertTail(LinkList linkList, String value) {
        // 创建新的节点
        LinkList newLinkList=new LinkList();
        // 给新节点的data赋值 value
        newLinkList.setData(value);
        // 如果链表为空
        if (linkList == null) {
            // 让链表的next指向新的节点
            linkList.setNext(newLinkList);
            return linkList;
        }

        // 定义一个游标去找尾节点
        LinkList curLinkList=new LinkList();
        // 让游标等于头节点
        curLinkList=linkList;
        // 对游标进行遍历，去找尾节点
        while(curLinkList.getNext()!=null){
            curLinkList=curLinkList.getNext();
        }
        //把尾节点的next指向新节点
        curLinkList.setNext(newLinkList);
        // 返回链表的头节点
        return linkList;
    }

    /**
     * 链表的删除
     */
    public LinkList del(LinkList linkList,String value){
        // 定义一个游标去找待删除元素的节点的上一个节点
        LinkList curLinkList=new LinkList();
        // 让游标等于头节点
        curLinkList=linkList;
        // 对游标进行遍历，去找待删除元素的节点的上一个节点
        while(!curLinkList.getNext().getData().equals(value)){
            curLinkList=curLinkList.getNext();
        }
        // 让待删除元素的节点的上一个节点的next指向待删除元素的下一个节点
        curLinkList.setNext(curLinkList.getNext().getNext());
        return  linkList;
    }
}
